const Product = require("../data/Product");
const Category = require("../data/Category");
const Product_picture = require("../data/Product_picture");
const { Op } = require("sequelize");
module.exports = {
  //获取商品分类
  async GetCategory() {
    const ins = await Category.findAll();
    const result = JSON.parse(JSON.stringify(ins))
    return result;
  },
  // 根据商品分类名称获取分类id
  async GetCategoryId(category_name) {
    const ins = await Category.findOne({
      where:{
        category_name
      }
    })
    return ins.toJSON().category_id;
  },
  // 根据商品分类id获取首页展示的商品信息
  async GetPromoProduct(category_id){
    const ins = await Product.findAll({
      where:{
        category_id
      },
      order:[["product_name"]],
      limit:7
    })
    let result = JSON.parse(JSON.stringify(ins))
    return result;
  },
  // 分页获取所有的商品信息
  async GetAllProduct(offset = 0, limit = 0) {
    const ins = await Product.findAll({
      limit,
      offset
    })
   
    let result = JSON.parse(JSON.stringify(ins))
    return result;
  },

  // 根据商品分类id,分页获取商品信息
  async GetProductByCategory( category_id, offset = 0, limit = 0)  {
    const ins = await Product.findAll({
      where:{
        category_id
      },
      order:[["product_sales"]],
      limit,
      offset
    })
    let result = JSON.parse(JSON.stringify(ins))
    return result;
  },


  // 根据搜索条件,分页获取商品信息
  async GetProductBySearch (search, offset = 0, limit = 0) { 
    const ins = await Product.findAll({
      where:{
        [Op.or]: [
          {
            product_name: {
              [Op.substring]: search,  
            }
          },
          {
            product_title: {
              [Op.substring]: search,  
            }
          },
          {
            product_intro: {
              [Op.substring]: search,  
            }
          },
        ]
       
      },
      order:[["product_sales"]],
      limit,
      offset
    })
    let result = JSON.parse(JSON.stringify(ins));
    return result;
  },
  // 根据商品id,获取商品详细信息
  async GetProductById(product_id)  {
    const ins = await Product.findOne({
      where:{
        product_id
      }
    })
    return ins?ins.toJSON():null;
  },
  // 根据商品id,获取商品图片
  async GetDetailsPicture(product_id)  {
    const ins = await Product_picture.findAll({
      where:{
        product_id
      }
    })
    const result = JSON.parse(JSON.stringify(ins));
    return result;
  }
}